package com.softer.wxzj.service;

import com.github.pagehelper.PageInfo;
import com.softer.wxzj.common.entity.CommonResult;
import com.softer.wxzj.common.entity.Page;
import com.softer.wxzj.entity.*;
import com.softer.wxzj.service.base.BaseService;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Author ludexing
 */
public interface DepReqListInfoService extends BaseService<DepReqListInfo> {

    /**
     * 维护 信息保存  自动判断 insert or update
     * 自动添加审批流
     *
     * @param depReqListInfo
     * @return
     */
    String save(DepReqListInfo depReqListInfo);



    /**
     * 缴存维护 两个查询  小区
     *
     * @param page           分页实体
     * @param fuzzy          模糊查询字段
     * @param baseRegionInfo 查询实体 regionName 小区名称
     *                       regionNo 小区编号
     *                       address 地址
     * @return 待维护小区列表
     */
    PageInfo<List<Map>> getRegionInfoList(Page page, String fuzzy, BaseRegionInfo baseRegionInfo);

    /**
     * 小区维护信息  进入自然幢
     * build自然幢实体  houseCount房间数    fullHouseCount已交钱户数    shouldHouseCount没交钱户数
     *
     * @param page          分页实体
     * @param baseBuildInfo 查询实体
     * @return 列表
     */
    PageInfo<List<Map>> getBiuldList(Page page, BaseBuildInfo baseBuildInfo);

    /**
     * 自然幢 点击进入 具体房屋交存维护
     * house房屋实体  payAmout应缴金额  balance账户余额
     *
     * @param page
     * @param info
     * @return
     */
    PageInfo<List<Map>> getHouseList(Page page, BaseHouseInfo info);

    /**
     * 缴存 维护 撤销  ids  state update 成0
     * 往 dep_revocat 表中 存一条数据  type=2 business_id=维护ID
     *
     * @param depReqListInfoIds
     * @return
     */
    CommonResult revocatDepReqList(String depReqListInfoIds);

    /**
     * 两个查询  维护
     *
     * @param page
     * @param depReqListInfo
     * @param fruzzy
     * @return
     */
    PageInfo<DepReqListInfo> getDepReqListInfoList(Page page, DepReqListInfo depReqListInfo, String fruzzy);

    /**
     * 缴存凭证打印
     *
     * @param page
     * @param depReqListInfo
     * @param fruzzy
     * @return
     */
    PageInfo<DepReqListInfo> getDepReqListInfoListPrint(Page page, DepReqListInfo depReqListInfo, String fruzzy);

    /**
     * 查询 撤销表
     *
     * @param page
     * @param depositApply
     * @param fuzzy
     * @return
     */
    PageInfo<List<Map>> findRevocationList(Page page, DepositApply depositApply, String fuzzy);

    /**
     * 根据撤销记录地 id 查询 type
     * 申请 转申请列表     维护转维护列表
     *
     * @param id
     * @return
     */
    PageInfo<DepositAudit> getRevocationInfo(Page page, String id);

    /**
     * 资金补齐缴存撤销查询
     *
     * @param
     * @return
     */
     PageInfo<DepReq> findRevocationListDep(Page page, DepReq depReq) ;

        /**
         * @param page
         * @param buildIds
         * @return
         */
    PageInfo<List<Map>> getHouseListByBuilIds(Page page, String buildIds);

    /**
     * getHouseList
     * 根据房屋ID查询交存详情
     *
     * @param id  房屋ID
     * @param lid 交存id
     * @return 交存详情
     */
    Map getDepositByHouseId(String id, String lid);

    CommonResult saveDepReqListInfos(List<DepReqListInfo> list);

    /**
     * 房屋是否发生交存
     *
     * @param id
     * @return
     */
    CommonResult selectCount(String id);
    /**
     * 交存维护
     *
     * @param id      缴存维护的ID
     * @param arcType 图档类型（逗号分隔）
     * @return 缴存维护记录
     */
    DepReqListInfo getInfoById(String id, String arcType);

    /**
     * 资金补齐房屋列表
     * @param page
     * @param baseHouseInfo
     * @return
     */
    PageInfo<List<Map>> getHouseListByBuilIdsByDevelop(Page page,BaseHouseInfo baseHouseInfo);

    /**
     * 资金缴存补齐提交审核
     * @param list
     * @return
     */
    List<String> submitSaveDepReqListInfos(List<DepReqListInfo> list);

    /**
     *审核
     * @param opinion
     * @param id
     * @param mark
     * @return
     */
    CommonResult addSubmit(String opinion, String id, String mark);

    /**
     *资金补齐审核通过
     * @param depReq
     * @param baseOrganization
     * @param b
     * @param dueAmount
     * @return
     */
     DepReq successDep(DepReq depReq, BaseOrganization baseOrganization, BaseBuildInfo b, BigDecimal dueAmount,String no);
    }
